package com.ruoyi.system.service;

import com.ruoyi.system.domain.Message;
import com.ruoyi.system.websocket.MessageForm;
import com.ruoyi.system.mapper.MessageMapper;

import java.util.List;

/**
 * @author chen
 * @date 2024/06/21
 *  使用springboot的唯一区别是要@Component声明，而使用独立容器是由容器自己管理websocket的，
 *  但在springboot中连容器都是spring管理的。
 *  虽然@Component默认是单例模式的，但springboot还是会为每个websocket连接初始化一个bean，
 *  所以可以用一个静态set保存起来
 */
public interface IMessageService {

    public Integer findNoReadMessageLength(String userId) throws Exception;

    public void sendMessage(Message message) throws Exception;

    // 获取所有数据
    public List<MessageForm> findAllMessageForm(String userId) throws Exception;

    // 获取登录用户所有聊过天的记录数据
    public List<MessageForm> findAllMessageChatDataWithLoginUserId(String userId)
            throws Exception;

    public List<MessageForm> searchUserForForm(String loginUserId, String searchUserName) throws Exception;

    public List<Message> findMessageBySendUserAndReceiveUser(String sendUserId, String receiveUserId) throws Exception;

    public List<Message> findBothMessages(String sendUserId, String receiveUserId,
                                   Integer limitMessageLength,
                                   MessageMapper messageMapper);
}
